/**
 * 
 */
package fr.mynounou.entities.contrats;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import fr.mynounou.entities.Enfant;
import fr.mynounou.entities.Nounou;
import fr.mynounou.entities.Parent;
import fr.mynounou.entities.planning.HorairePlanning;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * @author btavernier
 *
 */

@SuppressWarnings("serial")
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Contrat implements Serializable {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Integer id;
	
	List<Parent> parents;
	
	@ManyToOne
	Nounou nounou;
	
	Enfant enfant;
	
	HorairePlanning planningHoraire;
	
	double tarif;
	
	@Temporal(TemporalType.DATE)
	Date signature;

	/**
	 * @return the id
	 */
	public Integer getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(Integer id) {
		this.id = id;
	}

	/**
	 * @return the parents
	 */
	public List<Parent> getParents() {
		return parents;
	}

	/**
	 * @param parents the parents to set
	 */
	public void setParents(List<Parent> parents) {
		this.parents = parents;
	}

	/**
	 * @return the nounou
	 */
	public Nounou getNounou() {
		return nounou;
	}

	/**
	 * @param nounou the nounou to set
	 */
	public void setNounou(Nounou nounou) {
		this.nounou = nounou;
	}

	/**
	 * @return the enfant
	 */
	public Enfant getEnfant() {
		return enfant;
	}

	/**
	 * @param enfant the enfant to set
	 */
	public void setEnfant(Enfant enfant) {
		this.enfant = enfant;
	}

	/**
	 * @return the planningHoraire
	 */
	public HorairePlanning getPlanningHoraire() {
		return planningHoraire;
	}

	/**
	 * @param planningHoraire the planningHoraire to set
	 */
	public void setPlanningHoraire(HorairePlanning planningHoraire) {
		this.planningHoraire = planningHoraire;
	}

	/**
	 * @return the signature
	 */
	public Date getSignature() {
		return signature;
	}

	/**
	 * @param signature the signature to set
	 */
	public void setSignature(Date signature) {
		this.signature = signature;
	}

	/**
	 * @return the tarif
	 */
	public double getTarif() {
		return tarif;
	}

	/**
	 * @param tarif the tarif to set
	 */
	public void setTarif(double tarif) {
		this.tarif = tarif;
	}
	
	
}
